跳到主要内容

服务端修改客户端界面

文档待整理。本文所述可能已不是最佳实践

可以利用[绑定]来修改客户端界面。

以下代码在[界面]中执行

local bag = base.ui.panel {
layout = {
width = 100,
height = 100,
},
bind = {
layout = {
width = 'width',
},
},
image = '背包.png',
}

local ui, bind = base.ui.create(bag, '背包')

以下代码在[服务器]中执行,假定对应的玩家为player

local bind = base.ui.bind(player, '背包')
bind.width = 600 -- 将背包的宽度修改为600

需要注意的是,服务器使用的bind是只写的,你无法从里面读取出正确的数据。此外你每次修改数据都会产生网络流量,请谨慎使用。

array被绑定的话,必须给array指定个初始值,否则不知道是阵列

另外,array必须先改大,才能改里面的具体元素

要读取数据,得由客户端使用自定义消息来发送数据。换句话说,数据绑定是单向的,总是从服务器到客户端(当然,也可以客户端本地绑定)

除了修改数据,你也可以利用它来注册控件事件:

以下代码在[界面]中执行

local button = base.ui.button {
layout = {
width = 100,
height = 100,
},
bind = {
event = {
on_click = 'on_click',
},
},
image = '按钮.png',
}

local ui, bind = base.ui.create(button, '按钮')

以下代码在[服务器]中执行

local bind = base.ui.bind(player, '按钮')
bind.on_click = function ()
print '按钮被点击'
end

和修改属性类似,当你注册事件后每次控件触发此事件时都会产生网络流量,请谨慎使用。

bind

创建绑定

  • 参数
    • player (player) - 玩家
    • name (string) - 绑定名
  • 返回
    • bind (bind) - 绑定

绑定名指的是界面[创建控件]时制定的名字。

local bind = base.ui.bind(player, '背包')